#pragma once

#include "lee.h"
#include "cc9d.h"

namespace Chhol{
	struct sPkg{
		uint8 len;//datas部分的长度		
		uint8 from_port;//源端口号
		uint8 to_port;//目的端口号
		uint16 remote_addr;//远端地址
		uint8 datas[128-4-1];//数据
	};

	typedef sPkg* (*dChholPkg)(sPkg* pkg_received);
	class ChholCmd: protected CC9D{
		private:
		//解码器收到一个包后，会调用此函数进行包处理。
		dChholPkg receivedCB = 0;
		public:
		sCc9dPkg* receiced(sCc9dPkg* pkg_received);
		//外部程序想要发送包时，使用此函数开始一次发送
		void send(sPkg* pkg_to_send);
		//初始化。
		void init(Stream* stream, dChholPkg receivedCB,sPkg* receive_space);
		//循环从流中读取数据，如果暂时没有工作要做，就返回0，否则返回其他数字。
		inline uint8 loop(){ return CC9D::loop();}
	};
}

